草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 为什么指针更快更高效

我在Cbook中读到这篇文章:Pointershaveseveraluses,including:•Creatingfastandefficientcode•Providingaconvenientmeansforaddressingmanytypesofproblems•Supportingdynamicmemoryallocation•Makingexpressionscompactandsuccinct•Providingtheabilitytopassdatastructuresbypointerwithoutincurringalargeoverhead•Protecting

c++ - 为什么 sizeof(ptrdiff_t) == sizeof(uintptr_t)

我看到几篇关于size_t与uintptr_t/ptrdiff_t的帖子(例如size_tvs.uintptr_t),但没有关于这些新的c99ptr大小类型的相对大小的帖子。示例机器:vanillaubuntu14ltsx64,gcc4.8:printf("%zu,%zu,%zu\n",sizeof(uintptr_t),sizeof(intptr_t),sizeof(ptrdiff_t));打印:“8,8,8”这对我来说没有意义,因为我希望必须签名的diff类型需要比unsignedptr本身更多的位。考虑:NULL-(2^64-1)/*largestptr,64bitsof1's.

c++ - 在 VS 2015 中编译和链接第三方库

这个问题在这里已经有了答案:HowtoaddadditionallibrariestoVisualStudioproject?(4个答案)关闭3年前。我正在使用VisualStudio2015开发一个C++项目,我正在尝试链接一个外部库(在本例中为libtins)。该库目前位于我的桌面上。我试过在链接器设置下编辑项目设置,但它没有给我任何包含任何自定义库的选项。我如何在VS2015中执行此操作?

c++ - (num+mod)%mod 语句需要什么?

这个程序中的ans=(ans+mod)%mod语句需要什么?假设mod=10^9+7。此函数在O(log(n))复杂度的模运算下计算a的b次方:longlongpower(longlonga,longlongb){if(b==0)return1ll;longlongans=power(a,b/2);ans=(ans*ans)%mod;ans=(ans+mod)%mod;if(b%2==1)ans=(ans*a)%mod;ans=(ans+mod)%mod;returnans;} 最佳答案 这种结构最常见的用法是确保结果是非负的。标准

c++ - 为已知的更常见路径优化分支

请考虑以下代码:voiderror_handling();boolmethod_impl();boolmethod(){constboolres=method_impl();if(res==false){error_handling();returnfalse;}returntrue;}我知道method_impl()会在99.999%(是的,小数点后三位)的情况下返回true,但我的编译器不会。method()在时间消耗方面是部分关键的。我是否应该重写method()(并降低其可读性)以确保仅当method_impl()返回false时才会发生跳转?如果是,怎么做?我应该让编译器为我

c++ - 很难理解 char (*p)[sizeof(c)]; 的优先级原则;

我正在学习指针并挑战自己,我尝试取消引用指向字符数组的指针。最终这成功了:char(*p)[sizeof(c)];其中c是一个数组c[]="something"我很难理解(*p)[sizeof(c)];与*p[sizeof(c)];的区别。p>根据我目前所知道的(这并不多!)计算机在(*p)[sizeof(c)];的情况下是这样说的:“p指向c!哦,顺便说一句,p是一个数组,无论sizeof(c)最终是什么”。但这对我来说似乎很奇怪,所以我想我对添加括号时所构造的内容感到困惑。谁能解释一下?上下文中的完整代码:#includeusingnamespacestd;intmain(inta

c++ - 为什么是 for(;;);无限循环?

这个问题在这里已经有了答案:Whydofor(;;)loopsbehavelikeinfiniteloops?(2个答案)关闭5年前。这些年来,我在C和C++中写过无数次这样的无限循环,但今天是我第一次真正思考它——为什么当条件子句为空时它是一个无限循环?有人会认为您必须编写类似for(;true;);的代码才能获得有效的无限循环吗?while();不编译也不while(;);无论如何,我喜欢for(;;);语法并经常使用它,但是将空条件block视为true是一种特殊情况,还是在C或C++中有其他情况空条件表达式在哪里被解释为真?

c++ - 从 Windows cmd 调用 MSYS bash

我在Windows7上使用GCC(使用TDM的构建)。我安装了MSYS以便能够执行Make并使用makefile进行编译。然而,每次启动MSYS都很繁琐Bashshell,导航到项目目录并运行make。我想要的是自动化这个过程。我更喜欢在Windows或类似的东西中有一个批处理文件,然后我从中调用MSYSBashshell。它应该导航到批处理文件所在的目录并调用make。这可能吗?我可以从cmd向MSYSBash发送命令吗(比如导航/调用make)?或者我可以让MSYSBash运行一个“Bash脚本”,它设置要执行的命令很像批处理脚本吗?PS:这类似于StackOverflow问题Ex

c++ - x86-64 长 double

longdouble在Intel64位平台上的实际精度是多少?是80位填充到128位还是实际的128位?如果是前者,除了gmp之外,还有其他选择可以实现真正的128精度吗? 最佳答案 x86-64精度与常规x86相同。扩展double为80位,使用x87ISA,添加了6个填充字节。没有128位FP硬件。不过,四精度或扩展四精度的软件实现可能会受益于x86-6464x64=>128整数乘法指​​令。 关于c++-x86-64长double,我们在StackOverflow上找到一个类似的问

c++ - 3个顶点之间的角度

例如,GetAngle((0,0),(100,0),(100,100))=90。我如何找到3个2D点之间的角度。 最佳答案 给定A、B和C点,您需要AB和AC之间的角度?首先计算vectorAB和AC——它只是B的坐标减去A的坐标,对于AC也是如此。乘坐dotproduct的两个vector。这只是vector的x坐标乘以y坐标的乘积。将此数字除以AB的长度,然后再除以AC的长度。这个结果是两个vector之间夹角的余弦,所以用arccos()就可以了。 关于c++-3个顶点之间的角度,